home *** CD-ROM | disk | FTP | other *** search
/ Amoszine 11 / Amoszine 11 (Disk 2 of 2).adf / Andy_Smith_Complete.lha / Interface_Example10.AMOS / Interface_Example10.amosSourceCode
AMOS Source Code  |  1980-04-14  |  5KB  |  185 lines

  1. '=========================================================================== 
  2. ' Interface example 10. A fully-fledged directory requester! 
  3.  
  4. ' Written by Andy Smith for Amoszine 
  5. '=========================================================================== 
  6.  
  7.  
  8. Resource Screen Open 0,640,200,0
  9.  
  10. _GET_DIR
  11.  
  12. Procedure _GET_DIR
  13.    
  14.    Dim FILE$(500)
  15.    A$=A$+"BAse 160,20; SIze 296,172; SAve 1;"
  16.    A$=A$+"BOx 0,0,1,296,172;"
  17.    A$=A$+"BOx 8,11,67,270,140;"
  18.    A$=A$+"BU 4,0,0,24,10,0,0,1;[UNpack 0,0,22;][UNpack 0,0,23; BR 0;]"
  19.    A$=A$+"LIne 24,0,28,300; PR 30,1,'Choose a directory',7;"
  20.    A$=A$+"VLine 272,11,57,124;"
  21.    A$=A$+"VSlide 1,275,13,8,109,2VA,1,1VA,1;[ZoneChange 2,ZonePosition;]"
  22.    A$=A$+"ActiveList 2,16,16,30,15,0VA,0,0,2,7;[]"
  23.    A$=A$+"LIne 11,143,44,292;"
  24.    A$=A$+"EDit 3,16,144,33,100,2VA,2,7;"
  25.    A$=A$+"BU 8,152,154,64,16,0,0,1;[UNpack 0,0,13; PR 12,4,'Okay',2;][UNpack 152,154,14; PR 164,159,'Okay',2; BR 0;]"
  26.    A$=A$+"BU 9,8,154,64,16,0,0,1;[UNpack 0,0,13; PR 10,4,'Parent',2;][UNpack 8,154,14; PR 18,159,'Parent',2; BR 0;]"
  27.    A$=A$+"BU 10,80,154,64,16,0,0,1;[UNpack 0,0,13; PR 10,4,'Drives',2;][UNpack 80,154,14; PR 90,159,'Drives',2; BR 0;]"
  28.    A$=A$+"BU 11,272,124,16,8,0,0,1;[UNpack 0,0,BP 63+;][BR 0;]"
  29.    A$=A$+"BU 12,272,132,16,8,0,0,1;[UNpack 0,0,BP 65+;][BR 0;]"
  30.    A$=A$+"BU 13,226,154,64,16,0,0,1;[UNpack 0,0,13; PR 6,4,'Cancel',2;][UNpack 226,154,14; PR 232,159,'Cancel',2; BR 0;]"
  31.    A$=A$+"EXit;"
  32.    Dialog Open 3,A$
  33.    Gosub _READ_DIR
  34.    SLDPOS=0
  35.  
  36.    ' Store the address of the first element of the array in an interface variable 
  37.    Vdialog(3,0)=Array(FILE$(0))
  38.  
  39.    ' Set the starting slider position at 0. The variable 2 (2VA) is used
  40.    ' within the VSlide instruction. 
  41.    Vdialog(3,2)=SLDPOS
  42.  
  43.    ' This IF statement just makes sure that when the trigger on the slider bar
  44.    ' is right at the bottom, there are no spaces displayed in the activelist. 
  45.    ' Comment the IF statement out and see.
  46.  
  47.    If COUNT>14
  48.       Vdialog(3,1)=COUNT-14
  49.    Else 
  50.       Vdialog(3,1)=1
  51.    End If 
  52.  
  53.    X=Dialog Run(3)
  54.    Dialog Update 3,3,Dir$
  55.    
  56.    Repeat 
  57.       D=Dialog(3)
  58.       If D=1 : Rem slider 
  59.          SLDPOS=Rdialog(3,1)
  60.       End If 
  61.       If D=11
  62.          Dec SLDPOS
  63.          If SLDPOS<0 : SLDPOS=0 : End If 
  64.          Vdialog(3,2)=SLDPOS
  65.          Dialog Update 3,1,SLDPOS
  66.       End If 
  67.       If D=12
  68.          Inc SLDPOS
  69.          If SLDPOS>COUNT-15 : SLDPOS=COUNT-15 : End If 
  70.          Vdialog(3,2)=SLDPOS
  71.          Dialog Update 3,1,SLDPOS
  72.       End If 
  73.       If D=2
  74.          PATH$=FILE$(Rdialog(3,2))
  75.          TEMP$=PATH$
  76.          If Left$(PATH$,1)="*"
  77.             PATH$=Mid$(PATH$,2,32)
  78.             POS=Instr(PATH$," ")
  79.             PATH$=Left$(PATH$,POS-1)
  80.             Dir$=PATH$
  81.             Gosub _READ_DIR
  82.             Vdialog(3,0)=Array(FILE$(0))
  83.             If COUNT>14
  84.                Dialog Update 3,1,,,COUNT-14
  85.             Else 
  86.                Dialog Update 3,1,,,1
  87.             End If 
  88.             Dialog Update 3,3,Dir$
  89.          End If 
  90.          TEMP$=Mid$(TEMP$,2,32)
  91.          POS=Instr(TEMP$," ")
  92.          TEMP$=Left$(TEMP$,POS-1)
  93.          If Right$(TEMP$,1)=":"
  94.             Dir$=TEMP$
  95.             Gosub _READ_DIR
  96.             Vdialog(3,0)=Array(FILE$(0))
  97.             If COUNT>14
  98.                Dialog Update 3,1,,,COUNT-14
  99.             Else 
  100.                Dialog Update 3,1,,,1
  101.             End If 
  102.             Dialog Update 3,3,Dir$
  103.          End If 
  104.       End If 
  105.       If D=3
  106.          PATH$=Rdialog$(3,3)
  107.          Trap Dir$=PATH$
  108.          If Errtrap=0
  109.             Gosub _READ_DIR
  110.             Vdialog(3,0)=Array(FILE$(0))
  111.             If COUNT>14
  112.                Dialog Update 3,1,,,COUNT-14
  113.             Else 
  114.                Dialog Update 3,1,,,1
  115.             End If 
  116.             Dialog Update 3,3,Dir$
  117.          Else 
  118. '            _ERROR["Directory does not exist"]
  119.          End If 
  120.       End If 
  121.       If D=9
  122.          Parent 
  123.          PATH$=Dir$
  124.          Gosub _READ_DIR
  125.          Vdialog(3,0)=Array(FILE$(0))
  126.          If COUNT>14
  127.             Dialog Update 3,1,,,COUNT-14
  128.          Else 
  129.             Dialog Update 3,1,,,1
  130.          End If 
  131.          Dialog Update 3,3,Dir$
  132.       End If 
  133.       If D=10
  134.          Gosub _READ_ASSIGNS
  135.          Vdialog(3,0)=Array(FILE$(0))
  136.          If COUNT>14
  137.             Dialog Update 3,1,,,COUNT-14
  138.          Else 
  139.             Dialog Update 3,1,,,1
  140.          End If 
  141.          Dialog Update 3,3,Dir$
  142.       End If 
  143.    Until D=4 or D=8 or D=13
  144.    Dialog Close 3
  145.    
  146.    If D=8 : Rem OK 
  147.       Print Dir$
  148.    End If 
  149.    
  150.    End 
  151.    
  152.    _READ_DIR:
  153.    For COUNT=0 To 500
  154.       FILE$(COUNT)=""
  155.    Next COUNT
  156.    COUNT=0
  157.    F$=Dir First$("**")
  158.    If Left$(F$,1)="*"
  159.       FILE$(COUNT)=F$
  160.       Inc COUNT
  161.    End If 
  162.    Repeat 
  163.       F$=Dir Next$
  164.       If Left$(F$,1)="*"
  165.          FILE$(COUNT)=F$
  166.          Inc COUNT
  167.       End If 
  168.    Until F$=""
  169.    Return 
  170.    
  171.    _READ_ASSIGNS:
  172.    For COUNT=0 To 500
  173.       FILE$(COUNT)="**"
  174.    Next COUNT
  175.    F$=Dev First$("**")
  176.    COUNT=0
  177.    FILE$(COUNT)=F$
  178.    Inc COUNT
  179.    Repeat 
  180.       F$=Dev Next$
  181.       FILE$(COUNT)=F$
  182.       Inc COUNT
  183.    Until F$=""
  184.    Return 
  185. End Proc